<?php
// 启动会话
session_start();

// 检查是否是翻页请求
$isPagination = isset($_GET['page']) && $_GET['page'] > 1;

// 如果不是翻页请求，检查上次搜索的时间戳
if (!$isPagination) {
    $lastSearchTime = isset($_SESSION['last_search_time']) ? $_SESSION['last_search_time'] : 0;

    // 当前时间戳
    $currentTimestamp = time();

    // 如果距离上次搜索时间不足10秒，则输出JSON提示信息
    if ($currentTimestamp - $lastSearchTime < 10) {
        $response = array(
            "code" => 10,
            "message" => "10秒内只能搜索一次，请稍后再试。"
        );
        header('Content-Type: application/json');
        echo json_encode($response);
        exit;
    }

    // 更新会话中的搜索时间戳
    $_SESSION['last_search_time'] = $currentTimestamp;
}

// 数据库连接信息
require_once 'config.php';

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查连接是否成功
if ($conn->connect_error) {
    die("数据库连接失败：" . $conn->connect_error);
}

// 搜索关键字
$searchKeyword = $_GET['keyword']; // 将搜索关键字作为GET参数传递

// 每页显示的条目数量
$itemsPerPage = 15;

// 获取当前页码
$currentPage = isset($_GET['page']) ? intval($_GET['page']) : 1;

// 计算偏移量
$offset = ($currentPage - 1) * $itemsPerPage;

// 使用预处理语句执行搜索，添加 LIMIT 和 OFFSET，并过滤掉已删除的数据
$sql = "SELECT pid, title, content FROM fs_posts WHERE (title LIKE ? OR (title IS NULL AND content LIKE ?)) AND deleted_at IS NULL LIMIT ? OFFSET ?";
$stmt = $conn->prepare($sql);
$searchTerm = "%" . $searchKeyword . "%";
$stmt->bind_param("ssii", $searchTerm, $searchTerm, $itemsPerPage, $offset); // 绑定参数
$stmt->execute();
$result = $stmt->get_result();

// 准备存储搜索结果的数组
$searchResults = array();

// 处理搜索结果
if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        $searchResults[] = array(
            "pid" => $row["pid"],
            "title" => $row["title"],
            "content" => $row["content"]
        );
    }

    // 输出成功的JSON响应
    $response = array(
        "code" => 0,
        "message" => "查询成功",
        "results" => $searchResults
    );
} else {
    // 输出没有找到匹配的结果的JSON响应
    $response = array(
        "code" => 1,
        "message" => "没有找到匹配的结果。"
    );
}

// 关闭连接
$stmt->close();
$conn->close();

// 将响应以JSON格式输出
header('Content-Type: application/json');
echo json_encode($response);
?>
